/*
题目: 全0子数组的数目
给你一个整数数组 nums ，返回全部为 0 的 子数组 数目。

子数组 是一个数组中一段连续非空元素组成的序列。
https://leetcode.cn/problems/number-of-zero-filled-subarrays/
 */
public class ZeroFilledSubarray {
    public long zeroFilledSubarray(int[] nums) {

        int n = nums.length;

        long result = 0;
        int left = -1; //左窗口边界

        for (int i = 0; i < n; i++) {
            if (nums[i] == 0) {
                if (left == -1) { //更新窗口左边界
                    left = i;
                }
                result += i - left + 1;  //以下有解释
            } else {
                left = -1;
            }
        }

        return result;
        //i - left + 1是以右端点元素为末尾元素的子数组的个数
        //(区间多长，含末尾元素的子数组就有多少个)，所有元素做队尾的子数组数之和就是符合条件子数组的个数。
    }
}
